Wysyłanie powiadomień SMS z usługi monitoringu przy użyciu Amazon SNS

Piotr Kmita 2018-07-04

W artykule przedstawię prosty sposób przygotowania usługi Amazon AWS SNS (Simple Notification Service) do wysyłania powiadomień z systemu monitoringu Icinga 2. Szczegóły dla tej usług znajdziecie Państwo na stronie https://aws.amazon.com/sns/. Opiszę również jak skonfigurować sam system monitorowania usługi do wysyłania powiadomień z usługi SNS. Jako,że ilość informacji jest dość długa rozbijemy go na 2 części. W pierwszej opiszemy jak przygotować usługę SNS i skonfigurować politykę dostępu oraz użytkownika w IAM. W drugiej skonfigurujemy serwer z systemem Icinga2 oraz uruchomimy na nim działającą usługę.

Amazon SNS (Simple Notification Service) służy do wysyłania powiadomień zarówno HTTP/s, jak i wiadomości SMS czy e-mail. Wiadomości mogą byś wysyłane nie tylko z usług Amazon Web Services, ale również z każdej innej usługi jak np. wysyłanie wiadomości SMS z systemu monitoringu Icinga 2. W tym artykule użyliśmy prostego przykładu z dla systemu Icinga 2, ponieważ jest to jeden z produktów, który oferujemy naszym klientom.

W tym artykule usługa SNS będzie nam służyła do wysyłania wiadomości SMS z systemu monitoringu Icinga 2. Jeśli system monitoringu wykryje, że jeden z serwerów będzie niedostępny, wyślę on do administratora wiadomość sms, za pomocą usługi SNS. Wiadomości mogą być również wysyłane, jeśli jedna z monitorowanych usług będzie niedostępna. Przed uruchomieniem usługi SNS, należy zapoznać się z planem płatności dostępnym na stronie https://aws.amazon.com/sns/pricing/. Warto zwrócić uwagę, że dla usługi SNS istnieje "Free Tier", gdzie za darmo możemy wysłać 100 wiadomości SMS oraz 1000 wiadomości e-mail.

W pierwszej kolejności zaczniemy od przygotowania środowiska Amazon w graficznej konsoli AWS Management Console.

Konfiguracja usługi Amazon SNS za pomocą konsoli "AWS Management Console"

Po zalogowaniu się do środowiska Amazon AWS wyszukujemy usługę "Simple Notification Service" (Rys. 1 - Simple Notification Service) i przechodzimy do "Create Topic" (Rys. 2 - Create topic).

 

Simple Notification Service

Rys. 1 - Simple Notification Service

 

Create topic

Rys. 2 - Create topic

Po kliknięciu "Create Topic" powinno wyskoczyć okienko "Create new topic" (Rys. 3 - Create new topic), w którym wpisujemy "Topic name" oraz "Display name". Ciekawostką jest, że "Display name" może mieć maksymalnie 10 znaków, a "Topic name" może mieć 256 oraz nie ma możliwość późniejszej zmiany "Topic name". Pole "Display name" możemy modyfikować w dowolnym momencie i może być on używany do identyfikacji tego zasobu.

 

Rys. 3 - Create new topic

Rys. 3 - Create new topic

Po kliknięciu "Create topic" ujrzymy podsumowanie, w którym zamieszczony będzie "Topic ARN" (Rys. 4 - Topic ARN). ARN będzie nam potrzebny do konfiguracji polityki bezpieczeństwa dla użytkownika z uprawnieniami do wysyłania powiadomień i służy on jako identyfikator tego topicu.

 

Rys. 4 - Topic ARN

Rys. 4 - Topic ARN

Teraz przechodzimy do stworzenia subskrypcji "Create subscription" widocznym w szczegółach "topicu". Jeśli zrobimy to w ten sposób, nie będziemy potrzebowali kopiować ARN wcześniej. Możemy również przejść po lewej stronie do "Subscriptions" i tam następnie stworzyć subskrypcje, ale wtedy nie zapomnijmy skopiować ciągu ARN "topicu".

Tworzenie subskrypcji to nic innego jak dodanie kontaktu, numeru telefonu w przypadku SMS, gdzie będą miały spływać powiadomienia z monitoringu. Wracając do naszego identyfikatora ARN danego "Topicu", warto go skopiować teraz i odłożyć gdzieś na boku, ponieważ będzie on nam potrzebny przy tworzeniu polityki dostępu do tego zasobu.

Po kliknięciu "Create subscription" ujrzymy nowe okno z prośbą o wybranie protokołu (Rys. 5 - Create subscription). W naszym przypadku będzie to SMS, ale może być również całkiem inny protokół. Za protokół rozumiemy tutaj kanał komunikacyjny, jakim ma zostać wysłane powiadomienie. Może to być SMS, e-mail, wejście na jakąś stronę po http/s, a także wykonanie dowolnej funkcji AWS Lambda. W polu "Endpoint" podajemy numer telefonu, na którym chcemy, aby była wysyłana wiadomość SMS.

 

Rys. 5 - Create subscription

Rys. 5 - Create subscription

Po stworzeniu subskrypcji przejdziemy do szczegółów danego "topicu" i ujrzymy dodaną subskrypcje z widocznym numerem kontaktowym (Rys. 6 - Topic details).

 

Rys. 6 - Topic details

Rys. 6 - Topic details

Na tym możemy zakończyć tworzenie konfigurację usługi Amazon SNS, która w zupełności wystarczy nam w podstawowym zastosowaniu systemu monitoringu.

Dodanie polityki dostępu oraz użytkownika w IAM z możliwością wysyłania sms

Jeśli nie posiadamy jeszcze utworzonego użytkownika IAM z ograniczonym dostępem i możliwością wysyłania powiadomień, zapoznajmy się z poniższymi informacjami.

W pierwszej kolejności tworzymy politykę dostępu, którą następnie przypiszemy do nowo utworzonego użytkownika. Utworzenie polityki dostępu jest niezbędne, jeśli chcemy zachować pewny poziom bezpieczeństwa i ograniczyć możliwość korzystania z usług przez wybranego użytkownika.

W tym celu przechodzimy do "My Security Credentials" -> "Policies".
Następnie klikamy "Create policy" aby utworzyć nową politykę (Rys. 7 - Create policy).

 

Rys. 7 - Create policy

Rys. 7 - Create policy

Ujrzymy edytor wizualny, gdzie w prosty sposób możemy dodać dostęp do wybranych zasobów przez zdefiniowanie pola "Actions". Poniżej zobaczymy politykę dla usługi SNS, z wybraną akcją zapisu "Publish" dla wcześniej utworzonego "Topicu" w usłudze SNS (Rys. 8 - Review policy - Visual editor).

 

Rys. 8 - Review policy - Visual editor

Rys. 8 - Review policy - Visual editor

Na kolejnym zrzucie ekranu (Rys. 9 - Review policy - JSON) znajduje się również ta sama polityka w kodzie JSON.

 

Rys. 9 - Review policy - JSON

Rys. 9 - Review policy - JSON

Klikamy "Review policy" i przechodzimy do następnego okna, w którym możemy wpisać nazwę polityki oraz jej opis (Rys. 10 - Review policy).

 

Rys. 10 - Review policy

Rys. 10 - Review policy

Po kliknięciu "Create policy" utworzymy własną politykę, która będzie widoczna na liście łącznie z pozostałymi politykami. Jeśli chcemy ograniczyć się tylko do własnych utworzonych polityk, możemy je odfiltrować i wskazać jedynie "Customer managed", po czym zostaną wyświetlone tylko utworzone przez nas polityki (Rys. 11 - Lista polityk).

 

Rys. 11 - Lista polityk

Rys. 11 - Lista polityk

Dodawanie użytkownika IAM

Logujemy się do konsoli AWS w celu utworzenia nowego użytkownika z ograniczonym dostępem. Po zalogowaniu wybieramy "My Security Credentials" -> "Users" -> "Add user" (Rys. 12 - Add IAM user).

 

Rys. 12 - Add IAM user

Rys. 12 - Add IAM user

Podajemy nazwę użytkownika i wybieramy dostęp "Programmatic Acces" (Rys. 13 - Programmatic access). Dzięki temu użytkownik będzie miał dostęp do AWS API i zostanie mu przypisany Access key i Secret access key, który będzie używany do uwierzytelnienia użytkownika.

 

Rys. 13 - Programmatic access

Rys. 13 - Programmatic access

Klikamy "Next Permissions" i wybieramy wcześniej utworzoną politykę bezpieczeństwa (Rys. 14 - Set permissions).

 

Rys. 14 - Set permissions

Rys. 14 - Set permissions

Klikamy "Next Review", weryfikujemy czy nazwa użytkownika się zgadza i klikamy "Create user" (Rys. 15 - Create user).

 

Rys. 15 - Create user

Rys. 15 - Create user

Po kliknięciu "Create User' w następnym etapie zobaczymy przypisany do naszego użytkownika "Access Key ID" oraz "Secret access key", który będziemy używać przy konfiguracji serwera z systemem Icinga 2 (Rys. 16 - Access key ID i Secret access key).

 

Rys. 16 - Access key ID i Secret access key

Rys. 16 - Access key ID i Secret access key

Poniżej zamieszczam jeszcze politykę bezpieczeństwa, którą użyliśmy w tym artykule, aby ograniczyć dostęp dla wybranego użytkownika.

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-1:ACOUNT_ID:Icingaweb2"
}
]
}

W kolejnym artykule opiszemy jak skonfigurowac serwer z systemem Icinga2 i uruchomimy na nim działającą usługe.

Potrzebujesz pomocy przy konfiguracji?

Kylos jako APN Select Consulting Partner, może Ci w tym pomóc.

Posiadamy duże doświadczenie w migracjach do chmury i budowaniu infrastruktury.

Dowiedz się więcej

Mogą Cię również zainteresować

comments powered by Disqus